import { login } from '../../api/user'

const userModule = {
  state: {
    username: '',
    avatarUrl: '',
    token: ''
  },
  mutations: {
    SET_USERNAME (state, payload) {
      state.username = payload
    },
    SET_AVATARURL (state, payload) {
      state.avatarUrl = payload
    },
    SET_TOKEN (state, payload) {
      state.token = payload
    }
  },
  actions: {
    // 异步登录，用于将登陆成功后的用户状态数据保存到state中
    // context 是与store 有着相同属性与方法结构的对象
    // payload 是用户信息对象，包含用户名与密码
    async loginAsync (context, payload) {
      try {
        const result = await login(payload)
        // 登陆成功，则将响应的数据保存到状态中
        // action中 不能直接更新状态，仍需要提交到mutation中
        context.commit('SET_USERNAME', result.username)
        context.commit('SET_AVATARURL', result.avatarUrl)
        context.commit('SET_TOKEN', result.token)
        return {
          isLogin: true
        }
      } catch (error) {
        alert('错误！！！')
      }
    }
  }
}

export default userModule
